home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 November / Freeware November 1998.img / dist / fw_elisp-manual-19.idb / usr / freeware / info / elisp-24.z / elisp-24 (.txt)
GNU Info File  |  1998-05-26  |  52KB  |  947 lines

  1. This is Info file elisp, produced by Makeinfo-1.63 from the input file
  2. elisp.texi.
  3.    This version is the edition 2.4.2 of the GNU Emacs Lisp Reference
  4. Manual.  It corresponds to Emacs Version 19.34.
  5.    Published by the Free Software Foundation 59 Temple Place, Suite 330
  6. Boston, MA  02111-1307  USA
  7.    Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996 Free Software
  8. Foundation, Inc.
  9.    Permission is granted to make and distribute verbatim copies of this
  10. manual provided the copyright notice and this permission notice are
  11. preserved on all copies.
  12.    Permission is granted to copy and distribute modified versions of
  13. this manual under the conditions for verbatim copying, provided that the
  14. entire resulting derived work is distributed under the terms of a
  15. permission notice identical to this one.
  16.    Permission is granted to copy and distribute translations of this
  17. manual into another language, under the above conditions for modified
  18. versions, except that this permission notice may be stated in a
  19. translation approved by the Foundation.
  20.    Permission is granted to copy and distribute modified versions of
  21. this manual under the conditions for verbatim copying, provided also
  22. that the section entitled "GNU General Public License" is included
  23. exactly as in the original, and provided that the entire resulting
  24. derived work is distributed under the terms of a permission notice
  25. identical to this one.
  26.    Permission is granted to copy and distribute translations of this
  27. manual into another language, under the above conditions for modified
  28. versions, except that the section entitled "GNU General Public License"
  29. may be included in a translation approved by the Free Software
  30. Foundation instead of in the original English.
  31. File: elisp,  Node: Frame Parameters,  Next: Frame Titles,  Prev: Multiple Displays,  Up: Frames
  32. Frame Parameters
  33. ================
  34.    A frame has many parameters that control its appearance and behavior.
  35. Just what parameters a frame has depends on what display mechanism it
  36. uses.
  37.    Frame parameters exist for the sake of window systems.  A terminal
  38. frame has a few parameters, mostly for compatibility's sake; only the
  39. height, width and `buffer-predicate' parameters really do something.
  40. * Menu:
  41. * Parameter Access::       How to change a frame's parameters.
  42. * Initial Parameters::       Specifying frame parameters when you make a frame.
  43. * X Frame Parameters::     List of frame parameters.
  44. * Size and Position::      Changing the size and position of a frame.
  45. File: elisp,  Node: Parameter Access,  Next: Initial Parameters,  Up: Frame Parameters
  46. Access to Frame Parameters
  47. --------------------------
  48.    These functions let you read and change the parameter values of a
  49. frame.
  50.  - Function: frame-parameters FRAME
  51.      The function `frame-parameters' returns an alist listing all the
  52.      parameters of FRAME and their values.
  53.  - Function: modify-frame-parameters FRAME ALIST
  54.      This function alters the parameters of frame FRAME based on the
  55.      elements of ALIST.  Each element of ALIST has the form `(PARM .
  56.      VALUE)', where PARM is a symbol naming a parameter.  If you don't
  57.      mention a parameter in ALIST, its value doesn't change.
  58. File: elisp,  Node: Initial Parameters,  Next: X Frame Parameters,  Prev: Parameter Access,  Up: Frame Parameters
  59. Initial Frame Parameters
  60. ------------------------
  61.    You can specify the parameters for the initial startup frame by
  62. setting `initial-frame-alist' in your `.emacs' file.
  63.  - Variable: initial-frame-alist
  64.      This variable's value is an alist of parameter values used when
  65.      creating the initial X window frame.  You can set this variable to
  66.      specify the appearance of the initial frame without altering
  67.      subsequent frames.  Each element has the form:
  68.           (PARAMETER . VALUE)
  69.      Emacs creates the initial frame before it reads your `~/.emacs'
  70.      file.  After reading that file, Emacs checks `initial-frame-alist',
  71.      and applies the parameter settings in the altered value to the
  72.      already created initial frame.
  73.      If these settings affect the frame geometry and appearance, you'll
  74.      see the frame appear with the wrong ones and then change to the
  75.      specified ones.  If that bothers you, you can specify the same
  76.      geometry and appearance with X resources; those do take affect
  77.      before the frame is created.  *Note X Resources: (emacs)Resources
  78.      X.
  79.      X resource settings typically apply to all frames.  If you want to
  80.      specify some X resources solely for the sake of the initial frame,
  81.      and you don't want them to apply to subsequent frames, here's how
  82.      to achieve this.  Specify parameters in `default-frame-alist' to
  83.      override the X resources for subsequent frames; then, to prevent
  84.      these from affecting the initial frame, specify the same
  85.      parameters in `initial-frame-alist' with values that match the X
  86.      resources.
  87.    If these parameters specify a separate minibuffer-only frame with
  88. `(minibuffer . nil)', and you have not created one, Emacs creates one
  89. for you.
  90.  - Variable: minibuffer-frame-alist
  91.      This variable's value is an alist of parameter values used when
  92.      creating an initial minibuffer-only frame--if such a frame is
  93.      needed, according to the parameters for the main initial frame.
  94.  - Variable: default-frame-alist
  95.      This is an alist specifying default values of frame parameters for
  96.      all Emacs frames--the first frame, and subsequent frames.  In many
  97.      cases, you can get the same results by means of X resources.
  98.    See also `special-display-frame-alist', in *Note Choosing Window::.
  99.    If you use options that specify window appearance when you invoke
  100. Emacs, they take effect by adding elements to `default-frame-alist'.
  101. One exception is `-geometry', which adds the specified position to
  102. `initial-frame-alist' instead.  *Note Command Arguments: (emacs)Command
  103. Arguments.
  104. File: elisp,  Node: X Frame Parameters,  Next: Size and Position,  Prev: Initial Parameters,  Up: Frame Parameters
  105. X Window Frame Parameters
  106. -------------------------
  107.    Just what parameters a frame has depends on what display mechanism it
  108. uses.  Here is a table of the parameters of an X window frame; of these,
  109. `name', `height', `width', and `buffer-predicate' provide meaningful
  110. information in non-X frames.
  111. `name'
  112.      The name of the frame.  Most window managers display the frame's
  113.      name in the frame's border, at the top of the frame.  If you don't
  114.      specify a name, and you have more than one frame, Emacs sets the
  115.      frame name based on the buffer displayed in the frame's selected
  116.      window.
  117.      If you specify the frame name explicitly when you create the
  118.      frame, the name is also used (instead of the name of the Emacs
  119.      executable) when looking up X resources for the frame.
  120. `display'
  121.      The display on which to open this frame.  It should be a string of
  122.      the form `"HOST:DPY.SCREEN"', just like the `DISPLAY' environment
  123.      variable.
  124. `left'
  125.      The screen position of the left edge, in pixels, with respect to
  126.      the left edge of the screen.  The value may be a positive number
  127.      POS, or a list of the form `(+ POS)' which permits specifying a
  128.      negative POS value.
  129.      A negative number -POS, or a list of the form `(- POS)', actually
  130.      specifies the position of the right edge of the window with
  131.      respect to the right edge of the screen.  A positive value of POS
  132.      counts toward the left.  If the parameter is a negative integer
  133.      -POS then POS is positive!
  134.      Some window managers ignore program-specified positions.  If you
  135.      want to be sure the position you specify is not ignored, specify a
  136.      non-`nil' value for the `user-position' parameter as well.
  137. `top'
  138.      The screen position of the top edge, in pixels, with respect to the
  139.      top edge of the screen.  The value may be a positive number POS,
  140.      or a list of the form `(+ POS)' which permits specifying a
  141.      negative POS value.
  142.      A negative number -POS, or a list of the form `(- POS)', actually
  143.      specifies the position of the bottom edge of the window with
  144.      respect to the bottom edge of the screen.  A positive value of POS
  145.      counts toward the top.  If the parameter is a negative integer
  146.      -POS then POS is positive!
  147.      Some window managers ignore program-specified positions.  If you
  148.      want to be sure the position you specify is not ignored, specify a
  149.      non-`nil' value for the `user-position' parameter as well.
  150. `icon-left'
  151.      The screen position of the left edge *of the frame's icon*, in
  152.      pixels, counting from the left edge of the screen.  This takes
  153.      effect if and when the frame is iconified.
  154. `icon-top'
  155.      The screen position of the top edge *of the frame's icon*, in
  156.      pixels, counting from the top edge of the screen.  This takes
  157.      effect if and when the frame is iconified.
  158. `user-position'
  159.      When you create a frame and specify its screen position with the
  160.      `left' and `top' parameters, use this parameter to say whether the
  161.      specified position was user-specified (explicitly requested in some
  162.      way by a human user) or merely program-specified (chosen by a
  163.      program).  A non-`nil' value says the position was user-specified.
  164.      Window managers generally heed user-specified positions, and some
  165.      heed program-specified positions too.  But many ignore
  166.      program-specified positions, placing the window in a default
  167.      fashion or letting the user place it with the mouse.  Some window
  168.      managers, including `twm', let the user specify whether to obey
  169.      program-specified positions or ignore them.
  170.      When you call `make-frame', you should specify a non-`nil' value
  171.      for this parameter if the values of the `left' and `top'
  172.      parameters represent the user's stated preference; otherwise, use
  173.      `nil'.
  174. `height'
  175.      The height of the frame contents, in characters.  (To get the
  176.      height in pixels, call `frame-pixel-height'; see *Note Size and
  177.      Position::.)
  178. `width'
  179.      The width of the frame contents, in characters.  (To get the
  180.      height in pixels, call `frame-pixel-width'; see *Note Size and
  181.      Position::.)
  182. `window-id'
  183.      The number of the X window for the frame.
  184. `minibuffer'
  185.      Whether this frame has its own minibuffer.  The value `t' means
  186.      yes, `nil' means no, `only' means this frame is just a minibuffer.
  187.      If the value is a minibuffer window (in some other frame), the
  188.      new frame uses that minibuffer.
  189. `buffer-predicate'
  190.      The buffer-predicate function for this frame.  The function
  191.      `other-buffer' uses this predicate (from the selected frame) to
  192.      decide which buffers it should consider, if the predicate is not
  193.      `nil'.  It calls the predicate with one arg, a buffer, once for
  194.      each buffer; if the predicate returns a non-`nil' value, it
  195.      considers that buffer.
  196. `font'
  197.      The name of the font for displaying text in the frame.  This is a
  198.      string.
  199. `auto-raise'
  200.      Whether selecting the frame raises it (non-`nil' means yes).
  201. `auto-lower'
  202.      Whether deselecting the frame lowers it (non-`nil' means yes).
  203. `vertical-scroll-bars'
  204.      Whether the frame has scroll bars for vertical scrolling
  205.      (non-`nil' means yes).
  206. `horizontal-scroll-bars'
  207.      Whether the frame has scroll bars for horizontal scrolling
  208.      (non-`nil' means yes).  (Horizontal scroll bars are not currently
  209.      implemented.)
  210. `scroll-bar-width'
  211.      The width of the vertical scroll bar, in pixels.
  212. `icon-type'
  213.      The type of icon to use for this frame when it is iconified.  If
  214.      the value is a string, that specifies a file containing a bitmap
  215.      to use.  Any other non-`nil' value specifies the default bitmap
  216.      icon (a picture of a gnu); `nil' specifies a text icon.
  217. `icon-name'
  218.      The name to use in the icon for this frame, when and if the icon
  219.      appears.  If this is `nil', the frame's title is used.
  220. `foreground-color'
  221.      The color to use for the image of a character.  This is a string;
  222.      the X server defines the meaningful color names.
  223. `background-color'
  224.      The color to use for the background of characters.
  225. `mouse-color'
  226.      The color for the mouse pointer.
  227. `cursor-color'
  228.      The color for the cursor that shows point.
  229. `border-color'
  230.      The color for the border of the frame.
  231. `cursor-type'
  232.      The way to display the cursor.  The legitimate values are `bar',
  233.      `box', and `(bar . WIDTH)'.  The symbol `box' specifies an
  234.      ordinary black box overlaying the character after point; that is
  235.      the default.  The symbol `bar' specifies a vertical bar between
  236.      characters as the cursor.  `(bar . WIDTH)' specifies a bar WIDTH
  237.      pixels wide.
  238. `border-width'
  239.      The width in pixels of the window border.
  240. `internal-border-width'
  241.      The distance in pixels between text and border.
  242. `unsplittable'
  243.      If non-`nil', this frame's window is never split automatically.
  244. `visibility'
  245.      The state of visibility of the frame.  There are three
  246.      possibilities: `nil' for invisible, `t' for visible, and `icon' for
  247.      iconified.  *Note Visibility of Frames::.
  248. `menu-bar-lines'
  249.      The number of lines to allocate at the top of the frame for a menu
  250.      bar.  The default is 1.  *Note Menu Bar::.  (In Emacs versions
  251.      that use the X toolkit, there is only one menu bar line; all that
  252.      matters about the number you specify is whether it is greater than
  253.      zero.)
  254. `parent-id'
  255.      The X window number of the window that should be the parent of
  256.      this one.  Specifying this lets you create an Emacs window inside
  257.      some other application's window.  (It is not certain this will be
  258.      implemented; try it and see if it works.)
  259. File: elisp,  Node: Size and Position,  Prev: X Frame Parameters,  Up: Frame Parameters
  260. Frame Size And Position
  261. -----------------------
  262.    You can read or change the size and position of a frame using the
  263. frame parameters `left', `top', `height', and `width'.  Whatever
  264. geometry parameters you don't specify are chosen by the window manager
  265. in its usual fashion.
  266.    Here are some special features for working with sizes and positions:
  267.  - Function: set-frame-position FRAME LEFT TOP
  268.      This function sets the position of the top left corner of FRAME to
  269.      LEFT and TOP.  These arguments are measured in pixels, and count
  270.      from the top left corner of the screen.  Negative parameter values
  271.      count up or rightward from the top left corner of the screen.
  272.  - Function: frame-height &optional FRAME
  273.  - Function: frame-width &optional FRAME
  274.      These functions return the height and width of FRAME, measured in
  275.      characters.  If you don't supply FRAME, they use the selected
  276.      frame.
  277.  - Function: frame-pixel-height &optional FRAME
  278.  - Function: frame-pixel-width &optional FRAME
  279.      These functions return the height and width of FRAME, measured in
  280.      pixels.  If you don't supply FRAME, they use the selected frame.
  281.  - Function: frame-char-height &optional FRAME
  282.  - Function: frame-char-width &optional FRAME
  283.      These functions return the height and width of a character in
  284.      FRAME, measured in pixels.  The values depend on the choice of
  285.      font.  If you don't supply FRAME, these functions use the selected
  286.      frame.
  287.  - Function: set-frame-size FRAME COLS ROWS
  288.      This function sets the size of FRAME, measured in characters; COLS
  289.      and ROWS specify the new width and height.
  290.      To set the size based on values measured in pixels, use
  291.      `frame-char-height' and `frame-char-width' to convert them to
  292.      units of characters.
  293.    The old-fashioned functions `set-screen-height' and
  294. `set-screen-width', which were used to specify the height and width of
  295. the screen in Emacs versions that did not support multiple frames, are
  296. still usable.  They apply to the selected frame.  *Note Screen Size::.
  297.  - Function: x-parse-geometry GEOM
  298.      The function `x-parse-geometry' converts a standard X windows
  299.      geometry string to an alist that you can use as part of the
  300.      argument to `make-frame'.
  301.      The alist describes which parameters were specified in GEOM, and
  302.      gives the values specified for them.  Each element looks like
  303.      `(PARAMETER . VALUE)'.  The possible PARAMETER values are `left',
  304.      `top', `width', and `height'.
  305.      For the size parameters, the value must be an integer.  The
  306.      position parameter names `left' and `top' are not totally accurate,
  307.      because some values indicate the position of the right or bottom
  308.      edges instead.  These are the VALUE possibilities for the position
  309.      parameters:
  310.     an integer
  311.           A positive integer relates the left edge or top edge of the
  312.           window to the left or top edge of the screen.  A negative
  313.           integer relates the right or bottom edge of the window to the
  314.           right or bottom edge of the screen.
  315.     `(+ POSITION)'
  316.           This specifies the position of the left or top edge of the
  317.           window relative to the left or top edge of the screen.  The
  318.           integer POSITION may be positive or negative; a negative
  319.           value specifies a position outside the screen.
  320.     `(- POSITION)'
  321.           This specifies the position of the right or bottom edge of
  322.           the window relative to the right or bottom edge of the
  323.           screen.  The integer POSITION may be positive or negative; a
  324.           negative value specifies a position outside the screen.
  325.      Here is an example:
  326.           (x-parse-geometry "35x70+0-0")
  327.                => ((width . 35) (height . 70)
  328.                    (left . 0) (top - 0))
  329. File: elisp,  Node: Frame Titles,  Next: Deleting Frames,  Prev: Frame Parameters,  Up: Frames
  330. Frame Titles
  331. ============
  332.    Every frame has a title; most window managers display the frame
  333. title at the top of the frame.  You can specify an explicit title with
  334. the `name' frame property.  But normally you don't specify this
  335. explicitly, and Emacs computes the title automatically.
  336.    Emacs computes the frame title based on a template stored in the
  337. variable `frame-title-format'.
  338.  - Variable: frame-title-format
  339.      This variable specifies how to compute a title for a frame when
  340.      you have not explicitly specified one.
  341.      The variable's value is actually a mode line construct, just like
  342.      `mode-line-format'.  *Note Mode Line Data::.
  343.  - Variable: icon-title-format
  344.      This variable specifies how to compute the title for an iconified
  345.      frame, when you have not explicitly specified the frame title.
  346.      This title appears in the icon itself.
  347.  - Variable: multiple-frames
  348.      This variable is set automatically by Emacs.  Its value is `t' when
  349.      there are two or more frames (not counting minibuffer-only frames
  350.      or invisible frames).  The default value of `frame-title-format'
  351.      uses `multiple-frames' so as to put the buffer name in the frame
  352.      title only when there is more than one frame.
  353. File: elisp,  Node: Deleting Frames,  Next: Finding All Frames,  Prev: Frame Titles,  Up: Frames
  354. Deleting Frames
  355. ===============
  356.    Frames remain potentially visible until you explicitly "delete"
  357. them.  A deleted frame cannot appear on the screen, but continues to
  358. exist as a Lisp object until there are no references to it.  There is no
  359. way to cancel the deletion of a frame aside from restoring a saved frame
  360. configuration (*note Frame Configurations::.); this is similar to the
  361. way windows behave.
  362.  - Command: delete-frame &optional FRAME
  363.      This function deletes the frame FRAME.  By default, FRAME is the
  364.      selected frame.
  365.  - Function: frame-live-p FRAME
  366.      The function `frame-live-p' returns non-`nil' if the frame FRAME
  367.      has not been deleted.
  368.    Some window managers provide a command to delete a window.  These
  369. work by sending a special message to the program that operates the
  370. window.  When Emacs gets one of these commands, it generates a
  371. `delete-frame' event, whose normal definition is a command that calls
  372. the function `delete-frame'.  *Note Misc Events::.
  373. File: elisp,  Node: Finding All Frames,  Next: Frames and Windows,  Prev: Deleting Frames,  Up: Frames
  374. Finding All Frames
  375. ==================
  376.  - Function: frame-list
  377.      The function `frame-list' returns a list of all the frames that
  378.      have not been deleted.  It is analogous to `buffer-list' for
  379.      buffers.  The list that you get is newly created, so modifying the
  380.      list doesn't have any effect on the internals of Emacs.
  381.  - Function: visible-frame-list
  382.      This function returns a list of just the currently visible frames.
  383.      *Note Visibility of Frames::.  (Terminal frames always count as
  384.      "visible", even though only the selected one is actually
  385.      displayed.)
  386.  - Function: next-frame &optional FRAME MINIBUF
  387.      The function `next-frame' lets you cycle conveniently through all
  388.      the frames from an arbitrary starting point.  It returns the "next"
  389.      frame after FRAME in the cycle.  If FRAME is omitted or `nil', it
  390.      defaults to the selected frame.
  391.      The second argument, MINIBUF, says which frames to consider:
  392.     `nil'
  393.           Exclude minibuffer-only frames.
  394.     `visible'
  395.           Consider all visible frames.
  396.     0
  397.           Consider all visible or iconified frames.
  398.     a window
  399.           Consider only the frames using that particular window as their
  400.           minibuffer.
  401.     anything else
  402.           Consider all frames.
  403.  - Function: previous-frame &optional FRAME MINIBUF
  404.      Like `next-frame', but cycles through all frames in the opposite
  405.      direction.
  406.    See also `next-window' and `previous-window', in *Note Cyclic Window
  407. Ordering::.
  408. File: elisp,  Node: Frames and Windows,  Next: Minibuffers and Frames,  Prev: Finding All Frames,  Up: Frames
  409. Frames and Windows
  410. ==================
  411.    Each window is part of one and only one frame; you can get the frame
  412. with `window-frame'.
  413.  - Function: window-frame WINDOW
  414.      This function returns the frame that WINDOW is on.
  415.    All the non-minibuffer windows in a frame are arranged in a cyclic
  416. order.  The order runs from the frame's top window, which is at the
  417. upper left corner, down and to the right, until it reaches the window at
  418. the lower right corner (always the minibuffer window, if the frame has
  419. one), and then it moves back to the top.
  420.  - Function: frame-top-window FRAME
  421.      This returns the topmost, leftmost window of frame FRAME.
  422.    At any time, exactly one window on any frame is "selected within the
  423. frame".  The significance of this designation is that selecting the
  424. frame also selects this window.  You can get the frame's current
  425. selected window with `frame-selected-window'.
  426.  - Function: frame-selected-window FRAME
  427.      This function returns the window on FRAME that is selected within
  428.      FRAME.
  429.    Conversely, selecting a window for Emacs with `select-window' also
  430. makes that window selected within its frame.  *Note Selecting Windows::.
  431.    Another function that (usually) returns one of the windows in a
  432. frame is `minibuffer-window'.  *Note Minibuffer Misc::.
  433. File: elisp,  Node: Minibuffers and Frames,  Next: Input Focus,  Prev: Frames and Windows,  Up: Frames
  434. Minibuffers and Frames
  435. ======================
  436.    Normally, each frame has its own minibuffer window at the bottom,
  437. which is used whenever that frame is selected.  If the frame has a
  438. minibuffer, you can get it with `minibuffer-window' (*note Minibuffer
  439. Misc::.).
  440.    However, you can also create a frame with no minibuffer.  Such a
  441. frame must use the minibuffer window of some other frame.  When you
  442. create the frame, you can specify explicitly the minibuffer window to
  443. use (in some other frame).  If you don't, then the minibuffer is found
  444. in the frame which is the value of the variable
  445. `default-minibuffer-frame'.  Its value should be a frame that does have
  446. a minibuffer.
  447.    If you use a minibuffer-only frame, you might want that frame to
  448. raise when you enter the minibuffer.  If so, set the variable
  449. `minibuffer-auto-raise' to `t'.  *Note Raising and Lowering::.
  450.  - Variable: default-minibuffer-frame
  451.      This variable specifies the frame to use for the minibuffer
  452.      window, by default.  It is always local to the current terminal
  453.      and cannot be buffer-local.  *Note Multiple Displays::.
  454. File: elisp,  Node: Input Focus,  Next: Visibility of Frames,  Prev: Minibuffers and Frames,  Up: Frames
  455. Input Focus
  456. ===========
  457.    At any time, one frame in Emacs is the "selected frame".  The
  458. selected window always resides on the selected frame.
  459.  - Function: selected-frame
  460.      This function returns the selected frame.
  461.    The X server normally directs keyboard input to the X window that the
  462. mouse is in.  Some window managers use mouse clicks or keyboard events
  463. to "shift the focus" to various X windows, overriding the normal
  464. behavior of the server.
  465.    Lisp programs can switch frames "temporarily" by calling the
  466. function `select-frame'.  This does not override the window manager;
  467. rather, it escapes from the window manager's control until that control
  468. is somehow reasserted.
  469.    When using a text-only terminal, there is no window manager;
  470. therefore, `switch-frame' is the only way to switch frames, and the
  471. effect lasts until overridden by a subsequent call to `switch-frame'.
  472. Only the selected terminal frame is actually displayed on the terminal.
  473. Each terminal screen except for the initial one has a number, and the
  474. number of the selected frame appears in the mode line after the word
  475. `Emacs' (*note Mode Line Variables::.).
  476.  - Function: select-frame FRAME
  477.      This function selects frame FRAME, temporarily disregarding the
  478.      focus of the X server if any.  The selection of FRAME lasts until
  479.      the next time the user does something to select a different frame,
  480.      or until the next time this function is called.
  481.    Emacs cooperates with the X server and the window managers by
  482. arranging to select frames according to what the server and window
  483. manager ask for.  It does so by generating a special kind of input
  484. event, called a "focus" event.  The command loop handles a focus event
  485. by calling `handle-switch-frame'.  *Note Focus Events::.
  486.  - Command: handle-switch-frame FRAME
  487.      This function handles a focus event by selecting frame FRAME.
  488.      Focus events normally do their job by invoking this command.
  489.      Don't call it for any other reason.
  490.  - Function: redirect-frame-focus FRAME FOCUS-FRAME
  491.      This function redirects focus from FRAME to FOCUS-FRAME.  This
  492.      means that FOCUS-FRAME will receive subsequent keystrokes intended
  493.      for FRAME.  After such an event, the value of `last-event-frame'
  494.      will be FOCUS-FRAME.  Also, switch-frame events specifying FRAME
  495.      will instead select FOCUS-FRAME.
  496.      If FOCUS-FRAME is `nil', that cancels any existing redirection for
  497.      FRAME, which therefore once again receives its own events.
  498.      One use of focus redirection is for frames that don't have
  499.      minibuffers.  These frames use minibuffers on other frames.
  500.      Activating a minibuffer on another frame redirects focus to that
  501.      frame.  This puts the focus on the minibuffer's frame, where it
  502.      belongs, even though the mouse remains in the frame that activated
  503.      the minibuffer.
  504.      Selecting a frame can also change focus redirections.  Selecting
  505.      frame `bar', when `foo' had been selected, changes any redirections
  506.      pointing to `foo' so that they point to `bar' instead.  This
  507.      allows focus redirection to work properly when the user switches
  508.      from one frame to another using `select-window'.
  509.      This means that a frame whose focus is redirected to itself is
  510.      treated differently from a frame whose focus is not redirected.
  511.      `select-frame' affects the former but not the latter.
  512.      The redirection lasts until `redirect-frame-focus' is called to
  513.      change it.
  514. File: elisp,  Node: Visibility of Frames,  Next: Raising and Lowering,  Prev: Input Focus,  Up: Frames
  515. Visibility of Frames
  516. ====================
  517.    An X window frame may be "visible", "invisible", or "iconified".  If
  518. it is visible, you can see its contents.  If it is iconified, the
  519. frame's contents do not appear on the screen, but an icon does.  If the
  520. frame is invisible, it doesn't show on the screen, not even as an icon.
  521.    Visibility is meaningless for terminal frames, since only the
  522. selected one is actually displayed in any case.
  523.  - Command: make-frame-visible &optional FRAME
  524.      This function makes frame FRAME visible.  If you omit FRAME, it
  525.      makes the selected frame visible.
  526.  - Command: make-frame-invisible &optional FRAME
  527.      This function makes frame FRAME invisible.  If you omit FRAME, it
  528.      makes the selected frame invisible.
  529.  - Command: iconify-frame &optional FRAME
  530.      This function iconifies frame FRAME.  If you omit FRAME, it
  531.      iconifies the selected frame.
  532.  - Function: frame-visible-p FRAME
  533.      This returns the visibility status of frame FRAME.  The value is
  534.      `t' if FRAME is visible, `nil' if it is invisible, and `icon' if
  535.      it is iconified.
  536.    The visibility status of a frame is also available as a frame
  537. parameter.  You can read or change it as such.  *Note X Frame
  538. Parameters::.
  539.    The user can iconify and deiconify frames with the window manager.
  540. This happens below the level at which Emacs can exert any control, but
  541. Emacs does provide events that you can use to keep track of such
  542. changes.  *Note Misc Events::.
  543. File: elisp,  Node: Raising and Lowering,  Next: Frame Configurations,  Prev: Visibility of Frames,  Up: Frames
  544. Raising and Lowering Frames
  545. ===========================
  546.    The X Window System uses a desktop metaphor.  Part of this metaphor
  547. is the idea that windows are stacked in a notional third dimension
  548. perpendicular to the screen surface, and thus ordered from "highest" to
  549. "lowest".  Where two windows overlap, the one higher up covers the one
  550. underneath.  Even a window at the bottom of the stack can be seen if no
  551. other window overlaps it.
  552.    A window's place in this ordering is not fixed; in fact, users tend
  553. to change the order frequently.  "Raising" a window means moving it
  554. "up", to the top of the stack.  "Lowering" a window means moving it to
  555. the bottom of the stack.  This motion is in the notional third
  556. dimension only, and does not change the position of the window on the
  557. screen.
  558.    You can raise and lower Emacs's X windows with these functions:
  559.  - Command: raise-frame FRAME
  560.      This function raises frame FRAME.
  561.  - Command: lower-frame FRAME
  562.      This function lowers frame FRAME.
  563.  - User Option: minibuffer-auto-raise
  564.      If this is non-`nil', activation of the minibuffer raises the frame
  565.      that the minibuffer window is in.
  566.    You can also enable auto-raise (raising automatically when a frame is
  567. selected) or auto-lower (lowering automatically when it is deselected)
  568. for any frame using frame parameters.  *Note X Frame Parameters::.
  569. File: elisp,  Node: Frame Configurations,  Next: Mouse Tracking,  Prev: Raising and Lowering,  Up: Frames
  570. Frame Configurations
  571. ====================
  572.    A "frame configuration" records the current arrangement of frames,
  573. all their properties, and the window configuration of each one.
  574.  - Function: current-frame-configuration
  575.      This function returns a frame configuration list that describes
  576.      the current arrangement of frames and their contents.
  577.  - Function: set-frame-configuration CONFIGURATION
  578.      This function restores the state of frames described in
  579.      CONFIGURATION.
  580. File: elisp,  Node: Mouse Tracking,  Next: Mouse Position,  Prev: Frame Configurations,  Up: Frames
  581. Mouse Tracking
  582. ==============
  583.    Sometimes it is useful to "track" the mouse, which means to display
  584. something to indicate where the mouse is and move the indicator as the
  585. mouse moves.  For efficient mouse tracking, you need a way to wait until
  586. the mouse actually moves.
  587.    The convenient way to track the mouse is to ask for events to
  588. represent mouse motion.  Then you can wait for motion by waiting for an
  589. event.  In addition, you can easily handle any other sorts of events
  590. that may occur.  That is useful, because normally you don't want to
  591. track the mouse forever--only until some other event, such as the
  592. release of a button.
  593.  - Special Form: track-mouse BODY...
  594.      Execute BODY, meanwhile generating input events for mouse motion.
  595.      The code in BODY can read these events with `read-event' or
  596.      `read-key-sequence'.  *Note Motion Events::, for the format of
  597.      mouse motion events.
  598.      The value of `track-mouse' is that of the last form in BODY.
  599.    The usual purpose of tracking mouse motion is to indicate on the
  600. screen the consequences of pushing or releasing a button at the current
  601. position.
  602.    In many cases, you can avoid the need to track the mouse by using
  603. the `mouse-face' text property (*note Special Properties::.).  That
  604. works at a much lower level and runs more smoothly than Lisp-level
  605. mouse tracking.
  606. File: elisp,  Node: Mouse Position,  Next: Pop-Up Menus,  Prev: Mouse Tracking,  Up: Frames
  607. Mouse Position
  608. ==============
  609.    The functions `mouse-position' and `set-mouse-position' give access
  610. to the current position of the mouse.
  611.  - Function: mouse-position
  612.      This function returns a description of the position of the mouse.
  613.      The value looks like `(FRAME X . Y)', where X and Y are integers
  614.      giving the position in characters relative to the top left corner
  615.      of the inside of FRAME.
  616.  - Function: set-mouse-position FRAME X Y
  617.      This function "warps the mouse" to position X, Y in frame FRAME.
  618.      The arguments X and Y are integers, giving the position in
  619.      characters relative to the top left corner of the inside of FRAME.
  620.  - Function: mouse-pixel-position
  621.      This function is like `mouse-position' except that it returns
  622.      coordinates in units of pixels rather than units of characters.
  623.  - Function: set-mouse-pixel-position FRAME X Y
  624.      This function warps the mouse like `set-mouse-position' except that
  625.      X and Y are in units of pixels rather than units of characters.
  626.      These coordinates are not required to be within the frame.
  627. File: elisp,  Node: Pop-Up Menus,  Next: Dialog Boxes,  Prev: Mouse Position,  Up: Frames
  628. Pop-Up Menus
  629. ============
  630.    When using X windows, a Lisp program can pop up a menu which the
  631. user can choose from with the mouse.
  632.  - Function: x-popup-menu POSITION MENU
  633.      This function displays a pop-up menu and returns an indication of
  634.      what selection the user makes.
  635.      The argument POSITION specifies where on the screen to put the
  636.      menu.  It can be either a mouse button event (which says to put
  637.      the menu where the user actuated the button) or a list of this
  638.      form:
  639.           ((XOFFSET YOFFSET) WINDOW)
  640.      where XOFFSET and YOFFSET are coordinates, measured in pixels,
  641.      counting from the top left corner of WINDOW's frame.
  642.      If POSITION is `t', it means to use the current mouse position.
  643.      If POSITION is `nil', it means to precompute the key binding
  644.      equivalents for the keymaps specified in MENU, without actually
  645.      displaying or popping up the menu.
  646.      The argument MENU says what to display in the menu.  It can be a
  647.      keymap or a list of keymaps (*note Menu Keymaps::.).
  648.      Alternatively, it can have the following form:
  649.           (TITLE PANE1 PANE2...)
  650.      where each pane is a list of form
  651.           (TITLE (LINE . ITEM)...)
  652.      Each LINE should be a string, and each ITEM should be the value to
  653.      return if that LINE is chosen.
  654.    *Usage note:* Don't use `x-popup-menu' to display a menu if a prefix
  655. key with a menu keymap would do the job.  If you use a menu keymap to
  656. implement a menu, `C-h c' and `C-h a' can see the individual items in
  657. that menu and provide help for them.  If instead you implement the menu
  658. by defining a command that calls `x-popup-menu', the help facilities
  659. cannot know what happens inside that command, so they cannot give any
  660. help for the menu's items.
  661.    The menu bar mechanism, which lets you switch between submenus by
  662. moving the mouse, cannot look within the definition of a command to see
  663. that it calls `x-popup-menu'.  Therefore, if you try to implement a
  664. submenu using `x-popup-menu', it cannot work with the menu bar in an
  665. integrated fashion.  This is why all menu bar submenus are implemented
  666. with menu keymaps within the parent menu, and never with
  667. `x-popup-menu'.  *Note Menu Bar::,
  668.    If you want a menu bar submenu to have contents that vary, you should
  669. still use a menu keymap to implement it.  To make the contents vary, add
  670. a hook function to `menu-bar-update-hook' to update the contents of the
  671. menu keymap as necessary.
  672. File: elisp,  Node: Dialog Boxes,  Next: Pointer Shapes,  Prev: Pop-Up Menus,  Up: Frames
  673. Dialog Boxes
  674. ============
  675.    A dialog box is a variant of a pop-up menu.  It looks a little
  676. different (if Emacs uses an X toolkit), it always appears in the center
  677. of a frame, and it has just one level and one pane.  The main use of
  678. dialog boxes is for asking questions that the user can answer with
  679. "yes", "no", and a few other alternatives.  The functions `y-or-n-p'
  680. and `yes-or-no-p' use dialog boxes instead of the keyboard, when called
  681. from commands invoked by mouse clicks.
  682.  - Function: x-popup-dialog POSITION CONTENTS
  683.      This function displays a pop-up dialog box and returns an
  684.      indication of what selection the user makes.  The argument
  685.      CONTENTS specifies the alternatives to offer; it has this format:
  686.           (TITLE (STRING . VALUE)...)
  687.      which looks like the list that specifies a single pane for
  688.      `x-popup-menu'.
  689.      The return value is VALUE from the chosen alternative.
  690.      An element of the list may be just a string instead of a cons cell
  691.      `(STRING . VALUE)'.  That makes a box that cannot be selected.
  692.      If `nil' appears in the list, it separates the left-hand items from
  693.      the right-hand items; items that precede the `nil' appear on the
  694.      left, and items that follow the `nil' appear on the right.  If you
  695.      don't include a `nil' in the list, then approximately half the
  696.      items appear on each side.
  697.      Dialog boxes always appear in the center of a frame; the argument
  698.      POSITION specifies which frame.  The possible values are as in
  699.      `x-popup-menu', but the precise coordinates don't matter; only the
  700.      frame matters.
  701.      If your Emacs executable does not use an X toolkit, then it cannot
  702.      display a real dialog box; so instead it displays the same items
  703.      in a pop-up menu in the center of the frame.
  704. File: elisp,  Node: Pointer Shapes,  Next: X Selections,  Prev: Dialog Boxes,  Up: Frames
  705. Pointer Shapes
  706. ==============
  707.    These variables specify which shape to use for the mouse pointer in
  708. various situations:
  709. `x-pointer-shape'
  710.      This variable specifies the pointer shape to use ordinarily in the
  711.      Emacs frame.
  712. `x-sensitive-text-pointer-shape'
  713.      This variable specifies the pointer shape to use when the mouse is
  714.      over mouse-sensitive text.
  715.    These variables affect newly created frames.  They do not normally
  716. affect existing frames; however, if you set the mouse color of a frame,
  717. that also updates its pointer shapes based on the current values of
  718. these variables.  *Note X Frame Parameters::.
  719.    The values you can use, to specify either of these pointer shapes,
  720. are defined in the file `lisp/term/x-win.el'.  Use `M-x apropos RET
  721. x-pointer RET' to see a list of them.
  722. File: elisp,  Node: X Selections,  Next: Color Names,  Prev: Pointer Shapes,  Up: Frames
  723. X Selections
  724. ============
  725.    The X server records a set of "selections" which permit transfer of
  726. data between application programs.  The various selections are
  727. distinguished by "selection types", represented in Emacs by symbols.  X
  728. clients including Emacs can read or set the selection for any given
  729. type.
  730.  - Function: x-set-selection TYPE DATA
  731.      This function sets a "selection" in the X server.  It takes two
  732.      arguments: a selection type TYPE, and the value to assign to it,
  733.      DATA.  If DATA is `nil', it means to clear out the selection.
  734.      Otherwise, DATA may be a string, a symbol, an integer (or a cons
  735.      of two integers or list of two integers), an overlay, or a cons of
  736.      two markers pointing to the same buffer.  An overlay or a pair of
  737.      markers stands for text in the overlay or between the markers.
  738.      The data may also be a vector of valid non-vector selection values.
  739.      Each possible TYPE has its own selection value, which changes
  740.      independently.  The usual values of TYPE are `PRIMARY' and
  741.      `SECONDARY'; these are symbols with upper-case names, in accord
  742.      with X Window System conventions.  The default is `PRIMARY'.
  743.  - Function: x-get-selection &optional TYPE DATA-TYPE
  744.      This function accesses selections set up by Emacs or by other X
  745.      clients.  It takes two optional arguments, TYPE and DATA-TYPE.
  746.      The default for TYPE, the selection type, is `PRIMARY'.
  747.      The DATA-TYPE argument specifies the form of data conversion to
  748.      use, to convert the raw data obtained from another X client into
  749.      Lisp data.  Meaningful values include `TEXT', `STRING', `TARGETS',
  750.      `LENGTH', `DELETE', `FILE_NAME', `CHARACTER_POSITION',
  751.      `LINE_NUMBER', `COLUMN_NUMBER', `OWNER_OS', `HOST_NAME', `USER',
  752.      `CLASS', `NAME', `ATOM', and `INTEGER'.  (These are symbols with
  753.      upper-case names in accord with X conventions.)  The default for
  754.      DATA-TYPE is `STRING'.
  755.    The X server also has a set of numbered "cut buffers" which can
  756. store text or other data being moved between applications.  Cut buffers
  757. are considered obsolete, but Emacs supports them for the sake of X
  758. clients that still use them.
  759.  - Function: x-get-cut-buffer N
  760.      This function returns the contents of cut buffer number N.
  761.  - Function: x-set-cut-buffer STRING
  762.      This function stores STRING into the first cut buffer (cut buffer
  763.      0), moving the other values down through the series of cut
  764.      buffers, much like the way successive kills in Emacs move down the
  765.      kill ring.
  766. File: elisp,  Node: Color Names,  Next: Resources,  Prev: X Selections,  Up: Frames
  767. Color Names
  768. ===========
  769.  - Function: x-color-defined-p COLOR &optional FRAME
  770.      This function reports whether a color name is meaningful.  It
  771.      returns `t' if so; otherwise, `nil'.  The argument FRAME says
  772.      which frame's display to ask about; if FRAME is omitted or `nil',
  773.      the selected frame is used.
  774.      Note that this does not tell you whether the display you are using
  775.      really supports that color.  You can ask for any defined color on
  776.      any kind of display, and you will get some result--that is how the
  777.      X server works.  Here's an approximate way to test whether your
  778.      display supports the color COLOR:
  779.           (defun x-color-supported-p (color &optional frame)
  780.             (and (x-color-defined-p color frame)
  781.                  (or (x-display-color-p frame)
  782.                      (member color '("black" "white"))
  783.                      (and (> (x-display-planes frame) 1)
  784.                           (equal color "gray")))))
  785.  - Function: x-color-values COLOR &optional FRAME
  786.      This function returns a value that describes what COLOR should
  787.      ideally look like.  If COLOR is defined, the value is a list of
  788.      three integers, which give the amount of red, the amount of green,
  789.      and the amount of blue.  Each integer ranges in principle from 0
  790.      to 65535, but in practice no value seems to be above 65280.  If
  791.      COLOR is not defined, the value is `nil'.
  792.           (x-color-values "black")
  793.                => (0 0 0)
  794.           (x-color-values "white")
  795.                => (65280 65280 65280)
  796.           (x-color-values "red")
  797.                => (65280 0 0)
  798.           (x-color-values "pink")
  799.                => (65280 49152 51968)
  800.           (x-color-values "hungry")
  801.                => nil
  802.      The color values are returned for FRAME's display.  If FRAME is
  803.      omitted or `nil', the information is return for the selected
  804.      frame's display.
  805. File: elisp,  Node: Resources,  Next: Server Data,  Prev: Color Names,  Up: Frames
  806. X Resources
  807. ===========
  808.  - Function: x-get-resource ATTRIBUTE CLASS &optional COMPONENT SUBCLASS
  809.      The function `x-get-resource' retrieves a resource value from the X
  810.      Windows defaults database.
  811.      Resources are indexed by a combination of a "key" and a "class".
  812.      This function searches using a key of the form
  813.      `INSTANCE.ATTRIBUTE' (where INSTANCE is the name under which Emacs
  814.      was invoked), and using `Emacs.CLASS' as the class.
  815.      The optional arguments COMPONENT and SUBCLASS add to the key and
  816.      the class, respectively.  You must specify both of them or neither.
  817.      If you specify them, the key is `INSTANCE.COMPONENT.ATTRIBUTE',
  818.      and the class is `Emacs.CLASS.SUBCLASS'.
  819.    *Note X Resources: (emacs)Resources X.
  820. File: elisp,  Node: Server Data,  Prev: Resources,  Up: Frames
  821. Data about the X Server
  822. =======================
  823.    This section describes functions you can use to get information about
  824. the capabilities and origin of an X display that Emacs is using.  Each
  825. of these functions lets you specify the display you are interested in:
  826. the DISPLAY argument can be either a display name, or a frame (meaning
  827. use the display that frame is on).  If you omit the DISPLAY argument,
  828. or specify `nil', that means to use the selected frame's display.
  829.  - Function: x-display-screens &optional DISPLAY
  830.      This function returns the number of screens associated with the
  831.      display.
  832.  - Function: x-server-version &optional DISPLAY
  833.      This function returns the list of version numbers of the X server
  834.      running the display.
  835.  - Function: x-server-vendor &optional DISPLAY
  836.      This function returns the vendor that provided the X server
  837.      software.
  838.  - Function: x-display-pixel-height &optional DISPLAY
  839.      This function returns the height of the screen in pixels.
  840.  - Function: x-display-mm-height &optional DISPLAY
  841.      This function returns the height of the screen in millimeters.
  842.  - Function: x-display-pixel-width &optional DISPLAY
  843.      This function returns the width of the screen in pixels.
  844.  - Function: x-display-mm-width &optional DISPLAY
  845.      This function returns the width of the screen in millimeters.
  846.  - Function: x-display-backing-store &optional DISPLAY
  847.      This function returns the backing store capability of the screen.
  848.      Values can be the symbols `always', `when-mapped', or `not-useful'.
  849.  - Function: x-display-save-under &optional DISPLAY
  850.      This function returns non-`nil' if the display supports the
  851.      SaveUnder feature.
  852.  - Function: x-display-planes &optional DISPLAY
  853.      This function returns the number of planes the display supports.
  854.  - Function: x-display-visual-class &optional DISPLAY
  855.      This function returns the visual class for the screen.  The value
  856.      is one of the symbols `static-gray', `gray-scale', `static-color',
  857.      `pseudo-color', `true-color', and `direct-color'.
  858.  - Function: x-display-grayscale-p &optional DISPLAY
  859.      This function returns `t' if the screen can display shades of gray.
  860.  - Function: x-display-color-p &optional DISPLAY
  861.      This function returns `t' if the screen is a color screen.
  862.  - Function: x-display-color-cells &optional DISPLAY
  863.      This function returns the number of color cells the screen
  864.      supports.
  865. File: elisp,  Node: Positions,  Next: Markers,  Prev: Frames,  Up: Top
  866. Positions
  867. *********
  868.    A "position" is the index of a character in the text of a buffer.
  869. More precisely, a position identifies the place between two characters
  870. (or before the first character, or after the last character), so we can
  871. speak of the character before or after a given position.  However, we
  872. often speak of the character "at" a position, meaning the character
  873. after that position.
  874.    Positions are usually represented as integers starting from 1, but
  875. can also be represented as "markers"--special objects that relocate
  876. automatically when text is inserted or deleted so they stay with the
  877. surrounding characters.  *Note Markers::.
  878. * Menu:
  879. * Point::         The special position where editing takes place.
  880. * Motion::        Changing point.
  881. * Excursions::    Temporary motion and buffer changes.
  882. * Narrowing::     Restricting editing to a portion of the buffer.
  883. File: elisp,  Node: Point,  Next: Motion,  Up: Positions
  884. Point
  885. =====
  886.    "Point" is a special buffer position used by many editing commands,
  887. including the self-inserting typed characters and text insertion
  888. functions.  Other commands move point through the text to allow editing
  889. and insertion at different places.
  890.    Like other positions, point designates a place between two characters
  891. (or before the first character, or after the last character), rather
  892. than a particular character.  Usually terminals display the cursor over
  893. the character that immediately follows point; point is actually before
  894. the character on which the cursor sits.
  895.    The value of point is a number between 1 and the buffer size plus 1.
  896. If narrowing is in effect (*note Narrowing::.), then point is
  897. constrained to fall within the accessible portion of the buffer
  898. (possibly at one end of it).
  899.    Each buffer has its own value of point, which is independent of the
  900. value of point in other buffers.  Each window also has a value of point,
  901. which is independent of the value of point in other windows on the same
  902. buffer.  This is why point can have different values in various windows
  903. that display the same buffer.  When a buffer appears in only one window,
  904. the buffer's point and the window's point normally have the same value,
  905. so the distinction is rarely important.  *Note Window Point::, for more
  906. details.
  907.  - Function: point
  908.      This function returns the value of point in the current buffer, as
  909.      an integer.
  910.           (point)
  911.                => 175
  912.  - Function: point-min
  913.      This function returns the minimum accessible value of point in the
  914.      current buffer.  This is normally 1, but if narrowing is in
  915.      effect, it is the position of the start of the region that you
  916.      narrowed to.  (*Note Narrowing::.)
  917.  - Function: point-max
  918.      This function returns the maximum accessible value of point in the
  919.      current buffer.  This is `(1+ (buffer-size))', unless narrowing is
  920.      in effect, in which case it is the position of the end of the
  921.      region that you narrowed to.  (*Note Narrowing::).
  922.  - Function: buffer-end FLAG
  923.      This function returns `(point-min)' if FLAG is less than 1,
  924.      `(point-max)' otherwise.  The argument FLAG must be a number.
  925.  - Function: buffer-size
  926.      This function returns the total number of characters in the current
  927.      buffer.  In the absence of any narrowing (*note Narrowing::.),
  928.      `point-max' returns a value one larger than this.
  929.           (buffer-size)
  930.                => 35
  931.           (point-max)
  932.                => 36
  933. File: elisp,  Node: Motion,  Next: Excursions,  Prev: Point,  Up: Positions
  934. Motion
  935. ======
  936.    Motion functions change the value of point, either relative to the
  937. current value of point, relative to the beginning or end of the buffer,
  938. or relative to the edges of the selected window.  *Note Point::.
  939. * Menu:
  940. * Character Motion::       Moving in terms of characters.
  941. * Word Motion::            Moving in terms of words.
  942. * Buffer End Motion::      Moving to the beginning or end of the buffer.
  943. * Text Lines::             Moving in terms of lines of text.
  944. * Screen Lines::           Moving in terms of lines as displayed.
  945. * List Motion::            Moving by parsing lists and sexps.
  946. * Skipping Characters::    Skipping characters belonging to a certain set.
  947.